#pragma once

#include <vector>
#include "llvm/Module.h"
#include "llvm/Function.h"
#include "llvm/BasicBlock.h"
#include "llvm/Instruction.h"
#include "llvm/Type.h"
#include "llvm/DerivedTypes.h"
#include "llvm/ExecutionEngine/JIT.h"
#include "llvm/Instructions.h"
#include <algorithm>

#include "Instrumenter.h"
#include "Utils.h"

struct BranchProfiler
{
	BranchProfiler(BranchInst *Inst, void*);
	void Profile(bool);

	BranchInst *Inst;

	int Positive;
	int Negative;

	static map<Instruction*, BranchProfiler*> ofInst;
};
